MySQL基本增删改
插入(insert)
-- 语法
insert into 表名(字段1,字段2,....)
value(值1,.....)
-- 例
INSERT INTO `girls`.`boys` (boyName, id, userCP)
VALUES
(
'boyName:varchar',
'id:mediumint',
userCP:int
),
(
'boyName:varchar',
'id:mediumint',
userCP:int
),
(
'boyName:varchar',
'id:mediumint',
userCP:int
);
- 插入的值类型要与列类型一致或兼容
- 不可为 null 的列必须插入值
- 可以为 null 的列直接写 null 表示跳过
修改(update)
修改单表的数据
update 表名
set 字段=新值,字段=新值
where 筛选条件;
修改多表的数据
update 表1
[join type] join 表2
on 连接条件
set 字段=值
[where 筛选条件]
删除(delete)
delete
from 表名
where 筛选条件
多表删除
delete 需要删的表
from 表1
[join type] join 表2
on 连接条件
where 筛选条件
清空表(truncate)
使用上面 delete
的方式清空表数据有个缺点,就是索引不是从零开始,所以这时就需要使用这个 truncate
关键字来清空表了(truncate
是用来清空数据的,所以不支持 where
之类的)
truncate table 表名
truncate 有以下几个特点要注意:
truncate
删除效率高- 假如要删除表中的自增长列,如果使用
delete
删除再次插入数据还是从上次的断点开始,使用truncate
删除后,再插入数据则是从 1 开始 truncate
删除不能回滚,delete
删除可以回滚
创建库、表
create database 库名 -- 但是如果已经存在这个库则会报错
-- 所以一般是用下面这个
create database if not exists 库名
use 库名
-- 创建一个临时用户表
CREATE TABLE IF NOT EXISTS `TestUser_tb`(
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
`password` CHAR(32) NOT NULL COMMENT '密码',
`email` VARCHAR(50) NOT NULL UNIQUE COMMENT '邮箱',
`age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
`sex` ENUM('man','woman','baomi') NOT NULL DEFAULT 'baomi' COMMENT '性别',
`tel` CHAR(11) NOT NULL UNIQUE COMMENT '电话',
`addr` VARCHAR(50) NOT NULL DEFAULT 'beijing' COMMENT '地址',
`card` CHAR(18) NOT NULL UNIQUE COMMENT '身份证号',
`married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未结婚,1代表已结婚',
`salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
删除库、表
drop database 库名
-- 最好也使用下面这个
drop database if exists 库名
drop table if exists 表名 -- 同理
修改表字段
-- 修改表的名称
alter table 原表名 rename to 新表名
-- 修改字段的名,因为修改是覆盖制的,所以要保持之前的类型,主键,索引之类的就要重写加上
alter table 表名 change column 列名 新列名 类型(原本是什么就填什么)
-- 修改列的类型或约束
-- after 是放在哪个字段后面,使用了 first 就不用加字段名了,因为是第一行
alter table 表名 modify column 列名 类型 [first|after 字段名]
-- 添加新列
alter table 表名 add column 新列名 类型
-- 删除列
alter table 表名 drop column 列名
复制表数据
-- 仅复制结构
create table 新表名 like 要复制的表;
-- 复制表的结构+数据
create table 新表名 select * from 要复制的表;
-- 只复制部分数据
create table 新表名
select 字段1,字段2
from 要复制的表名
where 筛选条件;
-- 仅复制某些字段(不包含数据)
create table 新表名
select 字段1,字段2
from 要复制的表名
where 0; -- 0 表示 false,即全部数据都不复制